home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / esc.jar / com / extensibility / xml / XDRWriter.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-06-30  |  7.9 KB  |  236 lines

  1. package com.extensibility.xml;
  2.  
  3. import com.extensibility.util.StringUtilities;
  4. import java.util.Enumeration;
  5. import java.util.Hashtable;
  6.  
  7. public class XDRWriter extends SchemaWriter {
  8.    ElemProxy elemProxy = new ElemProxy(this);
  9.    AttrProxy attrProxy = new AttrProxy(this);
  10.    EntityProxy entityProxy = new EntityProxy(this);
  11.    NotationProxy notationProxy = new NotationProxy(this);
  12.    static final int DATATYPES = 1;
  13.  
  14.    public XDRWriter(SchemaIntf var1) {
  15.       super(var1, var1.getURI());
  16.    }
  17.  
  18.    public XDRWriter(SchemaIntf var1, URI var2) {
  19.       super(var1, var2);
  20.    }
  21.  
  22.    private String qualifiedAttrName(String var1) {
  23.       AttributeDeclaration var2 = (AttributeDeclaration)super.schema.getNamedDeclaration(var1, Class.forName("com.extensibility.xml.AttributeDeclaration"));
  24.       return var2 != null && var2.isGlobal() ? ((SchemaWriter)this).getQName(var1, Class.forName("com.extensibility.xml.AttributeDeclaration")) : var1;
  25.    }
  26.  
  27.    void writeMetaProps(SXE var1, MetaPropHash var2, BaseDeclaration var3) {
  28.       if (var2 != null) {
  29.          Enumeration var4 = ((Hashtable)var2).keys();
  30.  
  31.          while(var4 != null && var4.hasMoreElements()) {
  32.             String var5 = (String)var4.nextElement();
  33.             Object var6 = ((Hashtable)var2).get(var5);
  34.             if (var6 instanceof String && (var3 == null || !var6.equals(var3.getMetaProp(var5)))) {
  35.                if (!var5.equals("pkey") && !var5.equals("fkey")) {
  36.                   if (var5.indexOf(":") != -1) {
  37.                      var1.writeLineBreak();
  38.                      var1.writeAttr(var5, var6.toString());
  39.                   }
  40.                } else {
  41.                   var1.writeAttr(String.valueOf("xa:").concat(String.valueOf(var5)), var6.toString());
  42.                }
  43.             }
  44.          }
  45.  
  46.       }
  47.    }
  48.  
  49.    void writeMetaPropSubelements(SXE var1, MetaPropHash var2) {
  50.       Enumeration var3 = ((Hashtable)var2).keys();
  51.  
  52.       while(var3 != null && var3.hasMoreElements()) {
  53.          String var4 = (String)var3.nextElement();
  54.          Object var5 = ((Hashtable)var2).get(var4);
  55.          if (var5 instanceof String[]) {
  56.             String[] var9 = (String[])var5;
  57.             if (var4.indexOf(":") != -1) {
  58.                for(int var10 = 0; var10 < var9.length; ++var10) {
  59.                   var1.writeElem(var4, -1);
  60.                   var1.writeText(var9[var10], false);
  61.                   var1.flush(var4);
  62.                }
  63.             }
  64.          } else if (var5 instanceof Hashtable) {
  65.             var1.writeElem(var4, true);
  66.             Hashtable var6 = (Hashtable)var5;
  67.             Enumeration var7 = var6.keys();
  68.  
  69.             while(var7.hasMoreElements()) {
  70.                String var8 = (String)var7.nextElement();
  71.                var1.writeAttr(var8, var6.get(var8).toString());
  72.             }
  73.          }
  74.       }
  75.  
  76.    }
  77.  
  78.    private void writeXDRComments(SXE var1, Enumeration var2) {
  79.       if (var2 != null) {
  80.          while(var2.hasMoreElements()) {
  81.             Comment var3 = (Comment)var2.nextElement();
  82.             var1.writeElem("description", -1);
  83.             if (var3.getKind().length() > 0) {
  84.                var1.writeAttr("usage", var3.getKind());
  85.             }
  86.  
  87.             this.writeValidHTML(var1, var3.getComment(false));
  88.             var1.flush("description");
  89.          }
  90.  
  91.       }
  92.    }
  93.  
  94.    String getPrefix(int var1) {
  95.       switch (var1) {
  96.          case 1:
  97.             return "dt:";
  98.          default:
  99.             return "";
  100.       }
  101.    }
  102.  
  103.    private boolean hasDBKeyMetaProps(MetaPropHash var1) {
  104.       if (var1 == null) {
  105.          return false;
  106.       } else {
  107.          Enumeration var2 = ((Hashtable)var1).keys();
  108.  
  109.          while(true) {
  110.             if (var2 != null && var2.hasMoreElements()) {
  111.                String var3 = (String)var2.nextElement();
  112.                Object var4 = ((Hashtable)var1).get(var3);
  113.                if (!(var4 instanceof String) || !var3.equals("pkey") && !var3.equals("fkey")) {
  114.                   continue;
  115.                }
  116.  
  117.                return true;
  118.             }
  119.  
  120.             return false;
  121.          }
  122.       }
  123.    }
  124.  
  125.    private boolean hasMetaProps(String var1, boolean var2) {
  126.       var1 = String.valueOf(var1).concat(String.valueOf(':'));
  127.  
  128.       for(int var3 = 0; var3 < super.schema.getCount(); ++var3) {
  129.          BaseDeclaration var4 = super.schema.getIndDeclaration(var3);
  130.          Enumeration var5 = super.schema.getIndDeclaration(var3).getMetaProps();
  131.          if (var2 && this.hasDBKeyMetaProps(var4.getMetaPropHash())) {
  132.             return true;
  133.          }
  134.  
  135.          if (var5 != null) {
  136.             while(var5.hasMoreElements()) {
  137.                if (var5.nextElement().toString().indexOf(var1) == 0) {
  138.                   return true;
  139.                }
  140.             }
  141.          }
  142.       }
  143.  
  144.       return false;
  145.    }
  146.  
  147.    protected SchemaWriter.DeclWriterProxyIntf createProxy(ElementDeclaration var1) {
  148.       this.elemProxy.setDecl(var1);
  149.       return this.elemProxy;
  150.    }
  151.  
  152.    protected SchemaWriter.DeclWriterProxyIntf createProxy(AttributeDeclaration var1) {
  153.       this.attrProxy.setDecl(var1);
  154.       return this.attrProxy;
  155.    }
  156.  
  157.    protected SchemaWriter.DeclWriterProxyIntf createProxy(GeneralEntityDeclaration var1) {
  158.       this.entityProxy.setDecl(var1);
  159.       return this.entityProxy;
  160.    }
  161.  
  162.    protected SchemaWriter.DeclWriterProxyIntf createProxy(NotationDeclaration var1) {
  163.       this.notationProxy.setDecl(var1);
  164.       return this.notationProxy;
  165.    }
  166.  
  167.    protected void writeHeader(SXE var1) {
  168.       var1.writeComment("Generated by XML Authority. Conforms to XML Data subset for IE 5");
  169.       var1.writeElem("Schema");
  170.       var1.writeAttr("name", super.schema.getURI().getShortName());
  171.       var1.writeLineBreak();
  172.       var1.writeAttr("xmlns", "urn:schemas-microsoft-com:xml-data");
  173.       var1.writeLineBreak();
  174.       var1.writeAttr("xmlns:dt", "urn:schemas-microsoft-com:datatypes");
  175.       if (super.schema.getNamedNamespace("xa") == null && this.hasMetaProps("xa", true)) {
  176.          var1.writeLineBreak();
  177.          var1.writeAttr("xmlns:xa", "www.extensibility.com/schemas/xdr/metaprops.xdr");
  178.       }
  179.  
  180.       if (super.schema.getNamedNamespace("exv") == null && ((SchemaWriter)this).getShowErrors()) {
  181.          var1.writeLineBreak();
  182.          var1.writeAttr("xmlns:exv", "urn:extensibility:exv:errors");
  183.       }
  184.  
  185.    }
  186.  
  187.    protected void writeSchemaComments(SXE var1) {
  188.       Enumeration var2 = super.schema.getComments();
  189.       this.writeXDRComments(var1, var2);
  190.    }
  191.  
  192.    protected void writeIncludes(SXE var1, Enumeration var2) {
  193.       while(var2.hasMoreElements()) {
  194.          ExternalSubset var3 = (ExternalSubset)var2.nextElement();
  195.          URI var4 = var3.getSystemURI();
  196.          var1.writeLineBreak();
  197.          var1.writeAttr(String.valueOf("xmlns:").concat(String.valueOf(((SchemaWriter)this).getPrefix(var4))), var4.getFullName());
  198.       }
  199.  
  200.    }
  201.  
  202.    protected void writeNamespaces(SXE var1, Enumeration var2) {
  203.       while(var2.hasMoreElements()) {
  204.          NamespaceDeclaration var3 = (NamespaceDeclaration)var2.nextElement();
  205.          String var4 = var3.getNamespace();
  206.          var1.writeLineBreak();
  207.          var1.writeAttr(String.valueOf("xmlns:").concat(String.valueOf(((BaseDeclaration)var3).getName())), var4 == null ? "" : var4);
  208.       }
  209.  
  210.       this.writeMetaProps(var1, super.schema.getMetaPropHash(), (BaseDeclaration)null);
  211.       this.writeMetaPropSubelements(var1, super.schema.getMetaPropHash());
  212.    }
  213.  
  214.    private void writeValidHTML(SXE var1, String var2) {
  215.       int var3 = StringUtilities.skipWhite(var2, 0);
  216.       if (var3 < var2.length() && var2.charAt(var3) != '<') {
  217.          var1.writeRawText("<p>");
  218.          var1.writeRawText(var2);
  219.          var1.writeRawText("</p>");
  220.       } else {
  221.          var1.writeRawText(var2);
  222.       }
  223.  
  224.    }
  225.  
  226.    // $FF: synthetic method
  227.    static void access$2000071(XDRWriter var0, SXE var1, Enumeration var2) {
  228.       var0.writeXDRComments(var1, var2);
  229.    }
  230.  
  231.    // $FF: synthetic method
  232.    static String access$2000171(XDRWriter var0, String var1) {
  233.       return var0.qualifiedAttrName(var1);
  234.    }
  235. }
  236.